分享好友 技术首页 技术分类 切换频道

ARM7在嵌入式应用中启动程序技术难点分析

2020-07-18 06:43270

技术难点分析

⑴.mmu的使用

mmu是存储器管理单元的缩写,是用来管理虚拟内存系统的器件。mmu通常是cpu的一部分,本身有少量存储空间存放从虚拟地址到物理地址的匹配表。此表称作tlb(转换旁置缓冲区)。所有数据请求都送往mmu,由mmu决定数据是在ram内还是在大容量存储器设备内。如果数据不在存储空间内,mmu将产生页面错误中断。
mmu的两个主要功能是:
将虚地址转换成物理地址。 
控制存储器存取允许。mmu关掉时,虚地址直接输出到物理地址总线。 
在实践中,使用mmu解决了如下几个问题:

①使用dram作为大容量存储器时,如果dram的行列是非平方的,会导致该dram的物理地址不连续,这将给程序的编写调试造成极大不便,而适当配置mmu可将其转换成虚拟地址连续的空间。

②arm内核的中断向量表要求放在0地址, 对于rom在0地址的情况,无法调试中断服务程序,所以在调试阶段有必要将可读写的存储器空间映射到0地址。

③系统的某些地址段是不允许被访问的,否则会产生不可预料的后果,为了避免这类错误,可以通过mmu匹配表的设置将这些地址段设为用户不可存取类型。

启动程序中生成的匹配表中包含地址映射,存储页大小(1m,64k,或4k)以及是否允许存取等信息。

例如:目标板上的16兆dram的物理地址区间为0xc000,0000~0xc07f,ffff;0xc100,0000~0xc17f,ffff;16兆rom的虚拟地址区间为:0x0000,0000~0x00ff,ffff。匹配表配置如下:

可以看到左边是连续的虚拟地址空间,右边是不连续的物理地址空间,而且将dram映射到了0地址区间。 mmu通过虚拟地址和页面表位置信息,按照转换逻辑获得对应物理地址,输出到地址总线上。

应注意到的是使能mmu后,程序继续运行,但是对于程序员来说程序计数器的指针已经改变,指向了rom所对应的虚拟地址。

⑵目标文件的分布装载分析

首先创建一个文本文件,称为分布装载描述文件。它为应用程序的各部分指定装载区间和执行区间。

举例如下:

flash 0x01000000 0x011fffff ;2m flash

{

flash 0x01000000

{

boot.o(boot,+first)

* (+ro)

}

dram 0x00000000

vector.0(vector,+first) 

int_handler.o (+ro) 

* (+rw,+zi)

}

在arm链接器的命令行里加入“-scov desc-ription-file –scf”或“-scatter desc-ription-file”,编译链接后,将产生一个分布装载文件。

链接器同时产生一组符号,给出每个分布描述文件中命名的区间的长度,装载地址和执行地址。由于链接器和c库都没有将代码从它的装载区间拷贝到执行区间,或创建一个零初始化区域的功能,所以要由应用程序员利用这组符号产生的信息完成这项工作,这是在呼叫c程序之前必须完成的,举例如下:

ldr r0, = |load$$dram$$base|

ldr r1, = |image$$dram$$base|

cmp r0, r1 ; 检查装载地址和执行地址是否相同

beq do_zi_init ; 相同,则不拷贝该区间,初始化零数据区

mov r2, r1 ; 不相同,将装载区拷贝到执行区 

ldr r4, = |image$$dram$$length|

add r2, r2, r4

bl copy

do_zi_init

ldr r1, = |image$$dram$$zi$$base|

mov r2, r1

ldr r4, = |image$$dram$$zi$$length|

add r2, r2, r4

mov r3, #0

bl zi_init ; 调用零初始化子程序

结束语:

本文介绍的启动程序已经在以cirrus logic公司的ep7211和ateml公司的at91m40400开发的系统上运行并测试通过。今后可以在这一基础上添加串行通信模块和flash操作模块,开发系统监控程序,从而实现应用程序的在线升级。

免责声明:矿库网文章内容来源于网络,为了传递信息,我们转载部分内容,尊重原作者的版权。所有转载文章仅用于学习和交流之目的,并非商业用途。如有侵权,请及时联系我们删除。感谢您的理解与支持。

点赞 0
举报
收藏 0
评论 0
分享 0
供给扰动叠加需求增速放缓 铝价延续区间震荡走势
氧化铝进口量月走势图资料来源:Wind资讯,方正中期研究院整理近年我国电解铝开工率走势资料来源:Wind资讯,方正中期研究院整理  2023年以来,铝价经历了先扬后抑再反弹的过程,虽然铝价的内外部驱动因素有所差别,但由于国内外两个市场的联动性,使得伦铝和沪铝价格在一季度走势方面极为相似。截至3月31日,沪铝主连收

0评论2023-04-12642

锌:恐慌情绪下跌破震荡区间,但难形成下行趋势
 近期行情受宏观情绪影响较大,锌价跌破前期震荡区间下沿,即跌破23000元/吨,主力合约一度跌至22000元/吨。随着近日欧美央行及金融监管机构出手“救市”,市场对金融风险扩散的担忧情绪有所缓解,锌价小幅反弹,截至3月21日收盘,主力合约报22450元/吨,仍未能上探至23000元/吨。  一、银行“暴雷”,恐慌情绪下锌价下

0评论2023-03-22314

铜:消费旺季支撑 期价将区间震荡
沪铜主力合约自上周四创下70260元/吨的高点后,近期承压回落,目前运行于69000元/吨附近。一方面,美联储紧缩压力仍未明显缓解,令铜价有所承压。

0评论2023-03-10104

1月份采购经理指数升至扩张区间
国家统计局服务业调查中心高级统计师赵庆河解读2023年1月中国采购经理指数

0评论2023-01-311239

工业以太网在广州地铁的应用

0评论2020-07-1812

仪表规范

0评论2020-07-1825

北京地铁10号线奥森区间降水方案选择与实施

0评论2020-07-1722

津滨轻轨过渡段附加防水层防水材料的选择与应用

0评论2020-07-1715

深圳地铁区间隧道防水施工技术

0评论2020-07-179